/*
 * EncoladorDAO.java
 *
 * Created on February 20, 2008, 10:16 AM
 *
 * To change this template, choose Tools | Options and locate the template under
 * the Source Creation and Management node. Right-click the template and choose
 * Open. You can then make changes to the template in the Source Editor.
 */

package com.computec.encolador.dao;

import com.computec.encolador.constantes.ConstantesGenerales;
import com.computec.encolador.dto.CategoriaDto;
import com.computec.encolador.dto.ImpresoraDto;
import com.computec.encolador.dto.JobDto;
import com.src.computec.radar.base.dao.GenericDAO;
import com.src.computec.radar.base.dao.exception.DAOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author fsanchez
 */
public class EncoladorDAO extends GenericDAO implements BaseEncoladorDAO {
    private ConstantesGenerales constantesGenerales;
    private String SCHEMA;
    
    /** Creates a new instance of EncoladorDAO */
    public EncoladorDAO() {
	constantesGenerales = ConstantesGenerales.getInstance();
        SCHEMA = constantesGenerales.SCHEMA;
    }
    
     /**
     * Obtiene un listado de categorias de la tabla ENCOLADOR_CATEGORIAS    
     * @return CategoriaDto 
     * @throws com.src.computec.radar.base.dao.exception.DAOException 
     */
    public ArrayList getCategorias() throws DAOException{
	
        Connection con = null;
        PreparedStatement statement = null;
        ResultSet rs = null;
	ArrayList catList=new ArrayList();
        try {
            con = getConnectionDB2();           


            statement = con.prepareStatement("SELECT CODIGO_CATEGORIA,DESCRIPCION FROM "+SCHEMA+".ENCOLADOR_CATEGORIAS");            
	    
            rs = statement.executeQuery();
            
            while (rs.next()) 
            {
                int indice1 = 0; 
		CategoriaDto dto=new CategoriaDto();
                dto.setCodigoCategoria(rs.getString(++indice1));
                dto.setDescripcion(rs.getString(++indice1));
		catList.add(dto);
            }
        } 
        catch (SQLException e) 
        {
            throw new DAOException("EncoladorDAO:getCategorias: " + e.toString(), e);
        }
        finally 
        {
            closeConnection(con, statement, rs);
        }
        return catList;
    }
    
    
    /**
     * Obtiene un listado de impresoras de la tabla ENCOLADOR_IMPRESORAS    
     * @return ImpresoraDto 
     * @throws com.src.computec.radar.base.dao.exception.DAOException 
     */
    public ArrayList getImpresoras() throws DAOException{
	
        Connection con = null;
        PreparedStatement statement = null;
        ResultSet rs = null;
	ArrayList impList=new ArrayList();
        try {
            con = getConnectionDB2();           


            statement = con.prepareStatement("SELECT CODIGO_IMPRESORA,NOMBRE_COMPLETO,ABREVIATURA FROM "+SCHEMA+".ENCOLADOR_IMPRESORAS");            
	    
            rs = statement.executeQuery();
            
            while (rs.next()) 
            {
                int indice1 = 0; 
		ImpresoraDto dto=new ImpresoraDto();
                dto.setCodigoImpresora(rs.getString(++indice1));
                dto.setNombreCompleto(rs.getString(++indice1));
		dto.setAbreviatura(rs.getString(++indice1));
		impList.add(dto);
            }
        } 
        catch (SQLException e) 
        {
            throw new DAOException("EncoladorDAO:getImpresoras: " + e.toString(), e);
        }
        finally 
        {
            closeConnection(con, statement, rs);
        }
        return impList;
    }
    
     /**
     * Obtiene un listado de jobs de la tabla ENCOLADOR_JOBS    
     * @return JobDto 
     * @throws com.src.computec.radar.base.dao.exception.DAOException 
     */
    public ArrayList getJobs() throws DAOException{
	
        Connection con = null;
        PreparedStatement statement = null;
        ResultSet rs = null;
	ArrayList jobList=new ArrayList();
        try {
            con = getConnectionDB2();           


            statement = con.prepareStatement("SELECT CODIGO_JOB,DESCRIPCION FROM "+SCHEMA+".ENCOLADOR_JOBS");            
	    
            rs = statement.executeQuery();
            
            while (rs.next()) 
            {
                int indice1 = 0; 
		JobDto dto=new JobDto();
                dto.setCodigoJob(rs.getString(++indice1));
                dto.setDescripcion(rs.getString(++indice1));
		jobList.add(dto);
            }
        } 
        catch (SQLException e) 
        {
            throw new DAOException("EncoladorDAO:getJobs: " + e.toString(), e);
        }
        finally 
        {
            closeConnection(con, statement, rs);
        }
        return jobList;
    }
    
     /**
     * Obtener la matriz Job x Impresora
     * @return boolean[][]
     * @throws com.src.computec.radar.base.dao.exception.DAOException 
     */
    public boolean[][] getMatrizJobXImpresora(int pCodigoJob,int pCodigoImpresora) throws DAOException{
	
        Connection con = null;
        PreparedStatement statement = null;
        ResultSet rs = null;
	
	boolean[][] matrizJobXImpresora=new boolean[pCodigoJob][pCodigoImpresora];
	try {
            con = getConnectionDB2();          

            statement = con.prepareStatement("SELECT CODIGO_JOB,CODIGO_IMPRESORA FROM "+SCHEMA+".ENCOLADOR_JOBXIMPRESORA");
	    
            rs = statement.executeQuery();
            
            while (rs.next()) 
            {
                int indice1 = 0; 			
                int y=rs.getInt(++indice1);
                int x=rs.getInt(++indice1);
		matrizJobXImpresora[y][x]=true;		
            }
        } 
        catch (SQLException e) 
        {
            throw new DAOException("EncoladorDAO:matrizJobXImpresora: " + e.toString(), e);
        }
        finally 
        {
            closeConnection(con, statement, rs);
        }
        return matrizJobXImpresora;
    }
}
